package com.sss.hloster02;

public class TestDriver02 {

	public static void main(String[] args) {
		test01();
		
	}
	private static void test03() {
		//定义一个数组变量
		int[] arr0 = {1,2,3,4};//i是实参
          System.out.println("主函数中，在子函数调用之前实参的值：");
          //数组打印函数
          printArr(arr0);//此处arr0变量是实参
          //调用子函数
          test031(arr0);//此处arr0变量是实参
          //子函数执行完成后，打印实参i的值
          System.out.println("主函数中，在子函数调用之后的实参的值");
          //数组打印函数
          printArr(arr0);//此处arr0变量是实参
	}

	
	
	/**
	 * 子涵数的调用：按引用传参
	 * i 函数定义时使用的，是形参
	 */
	
	private static void test031(int[] arr) {
		//打印子函数中形参的值
		System.out.println("子函数中，形参接收到实参的值：");
		//数组打印函数
		printArr(arr);//此处arr变量是实参
		//改变子函数中形参的值
		arr[0]+=5;
		System.out.println("子函数中，形参改变之后的值：");
        printArr(arr);//此处arr变量是实参
	
	}
	/**
	 * 打印数组元素内容
	 */
	
	public static void printArr(int[] arr) {
		for(int i:arr) {
			System.out.print("  "+i);
		}
		//换行
		System.out.println();
	}
	private static void test02() {
		//定义一个变量
		String str = "Hello";//str是实参
		System.out.println("主函数中，在子函数调用之前实参的值："+str);
		//调用子函数
		test021(str);
		//子函数执行完成之后，打印实参str 的值
		System.out.println("主函数中，在子函数调用之后实参的值："+str);
		
	}
	/**
	 * 子函数调用；按值传参
	 * str函数定义完成时使用的，是形参
	 */
	private static void test021(String str0) {
		//打印子函数中形参的值
		System.out.println("子函数中，形参接收到实参的值："+str0);
		//改变子函数中形参的值
		str0+="Master";
		System.out.println("子函数中，形参改变之后的值："+str0);
	}
	/**
	 * 按值传参
	 */
	private static void test01() {
		//定义一个变量
	int  i = 10;//i是实参
		System.out.println("主函数中，在子函数调用之前实参的值："+i);
		//调用子函数
		test011(i);
		//子函数执行完成之后，打印实参str 的值
		System.out.println("主函数中，在子函数调用之后实参的值："+i);
		
	}
	/**
	 * 子函数调用；按值传参
	 * i函数定义完成时使用的，是形参
	 */
	private static void test011(int i) {
		//打印子函数中形参的值
		System.out.println("子函数中，形参接收到实参的值："+i);
		//改变子函数中形参的值
		i+=3;
		System.out.println("子函数中，形参改变之后的值："+i);
	}
}
